AWS Amazon Kinesis คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS
สวัสดีครับ LIGHT จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้อยากจะมาแนะนำให้ทุกคนได้รู้จักกับบริการ Amazon Kinesis กันครับ
Amazon Kinesis คือ
เป็นบริการ fully managed service ซึ่งทำหน้าที่เป็นเกตเวย์สำหรับการจัดเก็บข้อมูลการสตรีมที่สร้างขึ้นจำนวนมากอย่างต่อเนื่องบน AWS โดยสามารถใช้งานเป็นบัฟเฟอร์ที่มีความน่าเชื่อถือสูง คงทน และประสิทธิภาพด้านต้นทุนที่ยอดเยี่ยม
จุดเด่น
Amazon Kinesis Data Streams
- Kinesis Data Streams สามารถลงบันทึกด้วยขนาดสูงสุดที่ 1 MB/วินาที และ 1,000 บันทึกต่อวินาทีสำหรับการเขียน และ 2 MB/วินาทีสำหรับการอ่าน รวมถึงสามารถดูข้อมูลได้แบบกึ่งเรียลไทม์ (ภายในไม่กี่วินาที)
-
บันทึกที่มีการลงทะเบียนไว้จะถูกกำหนดให้ไม่ซ้ำกันไว้ และสามารถใช้อ้างอิงข้อมูลจากแหล่งต่างๆได้ ไม่ว่าจะเป็น EC2、EMR、Lambda เป็นต้น
-
บันทึกจะถูกเก็บรักษาไว้เป็นเวลา 24 ชั่วโมง (และสามารถขยายได้ถึง 7 วันโดยการตั้งค่าเพิ่มเติม)
-
สามารถปรับประสิทธิภาพได้โดยการเพิ่มหรือลดจำนวน shard (ประสิทธิภาพต่อ 1 shard, 1000 PUT ต่อ 1 วินาที หรือ 1 MB ต่อ วินาที)
Amazon Kinesis Firehose
-
ข้อมูลที่ลงทะเบียนได้จะเหมือนกับ Kinesis Data Streams
-
ข้อมูลที่ลงทะเบียนจะถูกส่งออกไปยัง S3, Redshift โดยอัตโนมัติ
-
ไม่จำเป็นต้องใช้ shard ในการจัดการประสิทธิภาพ อย่างที่จำเป็นใน Kinesis Data Streams และยังสามารถใช้การเรียกเก็บเงินแบบจ่ายตามการใช้งานจริงตามจำนวนข้อมูลที่ป้อนเข้าไปได้
-
สามารถ PUT ได้ที่ 2500 ครั้งต่อวินาที และยังสามารถการปรับขีดจำกัดของบริการเพิ่มได้อีกด้วย
Amazon Kinesis Analytics
-
การประมวลผลแบบ TimeWindow ของข้อมูลสตรีมที่ลงทะเบียนใน Amazon Kinesis จะสามารถรวบรวมจากช่วงเวลาล่าสุดได้โดยใช้ SQL
-
สามารถใช้สำหรับการประมวลผลการสตรีมที่หลากหลาย เช่น "Streaming ETL", "continuous metric generation", "Responsive real-time analytics" เป็นต้น
ราคา
ตัวอย่างราคาของบริการ Kinesis Streams ตรวจสอบค่าบริการตัวอย่างได้จากลิ้งค์ทางด้านล่างนี้ครับ
Amazon Kinesis Data Firehose Pricing
Amazon Kinesis Data Streams Pricing
หรือท่านใดมีรายละเอียดการใช้งานในใจแล้วก็สามารถลงข้อมูลเพื่อตรวจสอบราคาที่เหมาะกับตนเองตามลิ้งค์ทางด้านล่างได้ครับ
Amazon Kinesis Data Streams
แผนบริการจะมีให้เลือก 2 อย่างคือ
- โหมดตามความต้องการ จะเหมาะกับผู้ที่สร้างสตรีมข้อมูลใหม่ที่ไม่ทราบปริมาณงาน และมีการรับส่งข้อมูลในแอปพลิเคชันในจำนวนที่คาดเดาไม่ได้ หรือไม่ต้องการจำกัดความจุที่จะใช้งาน
-
โหมดที่เตรียมใช้งาน เหมาะกับผู้ที่มีปริมาณการรับส่งข้อมูลในแอปพลิเคชันที่คาดเดาได้ เรียกใช้งานแอปพลิเคชันที่มีการรับส่งข้อมูลที่สม่ำเสมอหรือค่อยๆ เพิ่มขึ้น หรือต้องการควบคุมค่าใช้จ่ายในเรื่องความจุ
โดยในบทความนี้เราจะแสดงตัวอย่างราคาของโหมดตามความต้องการครับ
ตัวอย่างค่าบริการต่อเดือนโหมดตามความต้องการ (On-Demand Mode)
- ค่าบริการรายเดือน = 1125 USD
รายละเอียด
ในกรณีที่ส่งข้อมูลสตรีม 1,000 บันทึกต่อวินาที โดยแต่ละบันทึกมีขนาด 3 KB ไปยัง Amazon Kinesis Data Stream ที่ทำงานในโหมดความจุตามความต้องการใน Singapore Region
ตัวอย่างจะแสดงกรณีที่เก็บรักษาข้อมูลไว้ 1 วันและประมวลผลโดยใช้ผู้ใช้เพียงรายการเดียว หากใช้งานตามตัวอย่างนี้ค่าบริการรายเดือนที่คำนวณแล้วจะเป็นดังนี้
ขนาดบันทึก 3 KB ปัดขึ้นให้ใกล้เคียงกับ 1 KB มากที่สุด = 3 KB
ข้อมูลที่นำเข้า (GB ต่อวินาที) = (1,000 บันทึก/วินาที * 3 KB/บันทึก) / 1,048,576 KB/GB = 0.00286 GB/วินาที
ข้อมูลที่นำเข้า (GB ต่อเดือน) = 30 วัน/เดือน * 86,400 วินาที/วัน * 0.00286 GB/วินาที = 7,413.12 GB/เดือน
เนื่องจากคุณมีผู้ใช้บริการหนึ่งราย: ข้อมูลที่เรียกดู (GB ต่อวินาที) = 1 (ผู้ใช้บริการ) * (1,000 บันทึก/วินาที * 3 KB/บันทึก) / 1,048,576 KB/GB = 0.00286 GB/วินาที
ข้อมูลที่เรียกดู (GB ต่อเดือน) = 30 วัน/เดือน * 86,400 วินาที/วัน * 0.00286 GB/วินาที = 7,413.12 GB/เดือน
การเก็บรักษาหนึ่งวันรวมอยู่ในค่าบริการที่นำเข้าข้อมูล
ราคาของ Singapore Region อยู่ที่ 0.98 USD ต่อ GB ของข้อมูลที่นำเข้า
ค่าบริการรายเดือนของข้อมูลเข้า = 7,413.12 GB * 0.098 USD/GB = 726.48 USD
ราคาของ Singapore Region อยู่ที่ 0.049 USD ต่อ GB ของข้อมูลที่นำเข้า
ค่าบริการรายเดือนของข้อมูลออก = 7,413.12 GB * 0.049 USD/GB = 363.24 USD
เนื่องจากมีการใช้งานสตรีมเป็นเวลา 30 วันในเดือนดังกล่าว: ค่าบริการต่อสตรีม = 30 * 24 * 0.049 (อัตรา) = 35.28 USD
ค่าใช้จ่ายรายเดือนทั้งหมด = 726.48 USD + 363.24 USD + 35.28 USD = 1125 USD
Amazon Kinesis Firehose
ตัวอย่างค่าบริการต่อเดือน
- ค่าบริการรายเดือน = 45.73 USD
รายละเอียดที่ใช้ในการคำนวณ
- ราคาสำหรับ 500 TB แรก/ เดือน = 0.037 USD ต่อ GB (ราคาของ Singapore Region)
- ขนาดบันทึก 3 KB ปัดขึ้นให้ใกล้เคียงกับปริมาณข้อมูลที่นำเข้า 5 KB มากที่สุด = 5 KB
- GB ที่เรียกเก็บสำหรับการนำเข้าข้อมูล = (100 บันทึก/วินาที * 5 KB/บันทึก) / 1,048,576 KB/GB * 30 วัน / เดือน * 86,400 วินาที/วัน = 1,235.96 GB
- ค่าบริการการนำเข้าข้อมูลต่อเดือน = 1,235.96 GB * 0.029 USD/GB = 45.73 USD
ข้อมูลอ้างอิง(Amazon DynamoDB)
- ถึงการนำไปใช้จะต่างกัน แต่ก็ลองคำนวณดูว่าถ้าสมมติว่ามีการใช้ DynamoDB แทน Kinesis ในการรับข้อมูลสตรีมและจัดเก็บข้อมูลเป็นเวลา 24 ชั่วโมงราคาจะเป็นยังไง
- คำนวณโดยใช้ AWS SIMPLE MONTHLY CALCULATOR
รายละเอียด
Region - Singapore
411 GB ต่อเดือน (การเก็บรักษาข้อมูล 1 วัน)
Item Size - 3KB
จำนวน Item ที่เขียนต่อวินาที - 2,000 (เขียน 1,000, ลบ 1,000)
Use Case
Kinesis Streams + Lambda, EC2, EMR
- Lambda เหมาะอย่างยิ่งสำหรับการประมวลผลข้อมูลขนาดเล็กที่จัดเก็บข้อมูลที่ได้รับจาก Kinesis ลงใน S3, DynamoDB
-
EC2 สามารถใช้งานเป็นสภาพแวดล้อมการดำเนินการสำหรับแอพพลิเคชันที่ซับซ้อน และ ในกรณีที่มีข้อกำหนดในการรักษาประสิทธิภาพแบบเรียลไทม์ (ไม่กี่วินาที)
-
พิจารณาการใช้ EMR โดยคำนึงถึงขนาดข้อมูลและการประมวลผลเนื้อหา
Kinesis Firehose
- แนะนำให้ใช้ Firehose ในการทำ Data archive ไปยัง S3, Redshift
-
สามารถทำการประมวลผลแบบกึ่งเรียลไทม์ (หลายนาที) ได้ผ่านการเชื่อมโยง Lambda กับ S3 ที่เป็น Trigger
การใช้งานร่วมกับบริการของ AWS
- สามารถรับข้อมูลจาก AWS IoT, CloudWatch Logs ด้วย Kinesis ได้
-
Kinesis และ Lambda จะมีฟังก์ชั่นที่จะทำหน้าที่เป็น HUB ในการทำงานร่วมกับบริการอื่นๆ
-
Kinesis Analytics สามารถตั้งค่าการแจ้งเตือนขั้นสูง อย่าง log monitoring ได้
บทความที่เกี่ยวข้อง
- การใช้ Lambda Function เพื่อแปลงข้อมูลใน Firehose
- การส่งข้อมูลจาก EC2 ไปยัง Firehose
- การใช้งาน S3 ควบคู่กับ Amazon Kinesis Data Firehose
สุดท้ายนี้
Amazon Kinesis เป็นหนึ่งในระบบที่ถือเป็นกระดูกสันหลังของบริการคลาวด์ โดยถูกพัฒนาขึ้นมาเพื่อรวบรวมบันทึกการใช้บริการจริงที่เชื่อถือได้ และในบริการต่างๆของ Amazon Kinesis จะสังเกตได้ว่า AWS พัฒนาบริการนี้ให้ใช้งานง่ายขึ้นเยอะเลยครับ